package sword.offer;

/**
 * 在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。
 * 数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。
 * 请找出数组中任意一个重复的数字。
 *
 * @author 胡宇轩
 * @Email: yuxuan.hu01@bianlifeng.com
 */
public class Three {

    public void run(int nums[]){
        Solution solution = new Solution();
        solution.findRepeatNumber(nums);
    }
    class Solution {
        public int findRepeatNumber(int nums[]) {
            int result = -1;
            for(int i=0; i<nums.length;i++){
                while(nums[i] != i){
                    int index = nums[i];
                    if(nums[index] == nums[i]){
                        result = nums[i];
                        break;
                    }
                    nums[i] = nums[index];
                    nums[index] = index;
                }
            }
            return result;
        }
    }
}
